{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import warnings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "warnings.filterwarnings(\"default\", category=DeprecationWarning, module=\"__main__\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "autoscroll": "json-false",
    "collapsed": false,
    "ein.tags": [
     "worksheet-0"
    ]
   },
   "outputs": [],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "\n",
    "import sys \n",
    "from os import getcwd, path\n",
    "sys.path.append(path.dirname(getcwd()))\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sb\n",
    "import pandas as pd\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "autoscroll": "json-false",
    "collapsed": false,
    "ein.tags": [
     "worksheet-0"
    ]
   },
   "outputs": [],
   "source": [
    "from utils import data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from utils.paper import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "autoscroll": "json-false",
    "collapsed": false,
    "ein.tags": [
     "worksheet-0"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inner join with pdl1: 29 to 29 rows\n",
      "inner join with pdl1: 29 to 29 rows\n",
      "{'dataframe_hash': 1361907583592967110,\n",
      " 'provenance_file_summary': {u'cohorts': u'0.4.0+3.gda968fb',\n",
      "                             u'isovar': u'0.0.6',\n",
      "                             u'mhctools': u'0.3.0',\n",
      "                             u'numpy': u'1.11.1',\n",
      "                             u'pandas': u'0.18.1',\n",
      "                             u'pyensembl': u'1.0.3',\n",
      "                             u'scipy': u'0.18.1',\n",
      "                             u'topiary': u'0.1.0',\n",
      "                             u'varcode': u'0.5.10'}}\n"
     ]
    }
   ],
   "source": [
    "cohort = data.init_cohort(join_with=\"pdl1\",\n",
    "                          exclude_patient_ids=set(),\n",
    "                          only_patients_with_bams=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "autoscroll": "json-false",
    "collapsed": false,
    "ein.tags": [
     "worksheet-0"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inner join with pdl1: 29 to 29 rows\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "PD-L1 IC2  False  True \n",
      "Response               \n",
      "DCB            3      6\n",
      "No DCB        16      4\n",
      "Fisher's Exact Test: OR: 0.125, p-value=0.0316777675099 (two-sided)\n",
      "{{{pdl1_ic2_vs_benefit_plot}}}\n",
      "{{{pdl1_ic2_vs_benefit_benefit:67%}}}\n",
      "{{{pdl1_ic2_vs_benefit_no_benefit:20%}}}\n",
      "{{{pdl1_ic2_vs_benefit_fishers:n=29, Fisher's Exact p=0.032}}}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f1903918490>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fishers_exact_hyper_label_printer(\n",
    "    cohort.plot_benefit({\"PD-L1 IC2\": lambda row: row[\"IC Level\"] == \"IC2\"}),\n",
    "    label=\"pdl1_ic2_vs_benefit\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from scipy.stats import spearmanr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inner join with pdl1: 29 to 29 rows\n",
      "{{{pdl1_any_vs_benefit_plot}}}\n",
      "{{{pdl1_any_vs_benefit_spearmanr:n=29, Spearman rho=0.48 p=0.0083}}}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f18f7737110>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "result = cohort.plot_correlation({\"PD-L1 IC\": lambda row: int(row[\"PD-L1\"].split(\"IC\")[1]),\n",
    "                                    \"Response\": lambda row: row[\"benefit\"]},\n",
    "                                    plot_type=\"barplot\",\n",
    "                                    x_col=\"PD-L1 IC\",\n",
    "                                    stat_func=spearmanr)\n",
    "result.plot.set_xticklabels([\"IC0\", \"IC1\", \"IC2\"])\n",
    "result.plot.set_ylabel(\"Percent \" + cohort.benefit_plot_name)\n",
    "spearmanr_hyper_label_printer(result, label=\"pdl1_any_vs_benefit\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from cohorts.model import cohort_mean_bootstrap_auc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def pdl1(row):\n",
    "    return int(row[\"PD-L1\"].split(\"IC\")[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inner join with pdl1: 29 to 29 rows\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.77547411346456419"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cohort_mean_bootstrap_auc(cohort, pdl1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.11"
  },
  "name": "PD-L1.ipynb"
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
